﻿using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Collections;
using System.Transactions;

#region Dificuldade
namespace Distrackting.DataLayer
{
    public partial class Dificuldade
    {
        public void setDificuldade(Dificuldade d)
        {
            this.cod_dificuldade = d.cod_dificuldade;
            this.descricao = d.descricao;
        }
    }
}
#endregion


#region dataDificuldade
namespace Distrackting.DataLayer
{
    public class dataDificuldade
    {
        #region Methods
        public static void createDificuldade(Dificuldade d)
        {


            try
            {
                dbDataDataContext dbData = new dbDataDataContext();
                d.cod_dificuldade = System.Guid.NewGuid();
                dbData.Dificuldades.InsertOnSubmit(d);
                dbData.SubmitChanges();

            }
            catch (Exception e)
            {
                throw e;
            }
            
        }

        public static Dificuldade getDificuldade(Guid guid)
        {
            try
            {
                if (guid == null) return null;
                dbDataDataContext dbData = new dbDataDataContext();

                Dificuldade dfc = (from d in dbData.Dificuldades
                                where d.cod_dificuldade == guid
                                select d).FirstOrDefault();
                return dfc;
            }
            catch (Exception e)
            {
                throw e;
            }
        }

        public static Boolean changeDificuldade(Dificuldade d)
        {
            try
            {
                if (d == null)
                    return false;
                else
                {
                    dbDataDataContext dbData = new dbDataDataContext();
                    Dificuldade res = dbData.Dificuldades.FirstOrDefault(dfc => dfc.cod_dificuldade == d.cod_dificuldade);
                    if (res == null) return false;
                    else
                    {
                        res.setDificuldade(d);
                        dbData.SubmitChanges();
                        return true;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }
        }

        public static IQueryable<Dificuldade> getDificuldades()
        {
            try
            {
                dbDataDataContext dbData = new dbDataDataContext();
                return dbData.Dificuldades;
            }
            catch (Exception e)
            {
                throw e;
            }
        }

        public static IQueryable<Dificuldade> getDificuldades(Expression<Func<Dificuldade, bool>> whereClause)
        {
            try
            {
                dbDataDataContext dbData = new dbDataDataContext();
                return dbData.Dificuldades.Where(whereClause);
            }
            catch (Exception e)
            {
                throw e;
            }
        }

        public static Boolean deleteDificuldade(Dificuldade d)
        {
            try
            {
                dbDataDataContext dbData = new dbDataDataContext();
                if (dbData.Dificuldades.Contains(d))
                {
                    Dificuldade res = (from dfc in dbData.Dificuldades
                                    where dfc.cod_dificuldade == d.cod_dificuldade
                                    select dfc).FirstOrDefault();
                    if (res == null)
                        return false;
                    else
                    {
                        dbData.Dificuldades.DeleteOnSubmit(d);
                        dbData.SubmitChanges();
                        return true;
                    }
                }
                else return false;
            }
            catch (Exception e)
            {
                throw e;
            }
        }

        #endregion
    }
}
#endregion